{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LSGANs - Least Squares Generative Adversarial Networks\n",
    "\n",
    "Brief introduction to Least Squares Generative Adversarial Networks or LSGANs. This notebook is organized as follows:\n",
    "\n",
    "1. **Research Paper**\n",
    "* **Background**\n",
    "* **Definition**\n",
    "* **Training WGAN with MNIST dataset, Keras and TensorFlow**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Research Paper\n",
    "\n",
    "* [Least Squares Generative Adversarial Networks](https://arxiv.org/pdf/1611.04076.pdf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Background\n",
    "\n",
    "**Generative adversarial nets** consists of two models: a generative model $G$ that captures the data distribution, and a discriminative model $D$ that estimates the probability that a sample came from the training data rather than $G$.\n",
    "\n",
    "The generator distribution $p_g$ over data data $x$, the generator builds a mapping function from a prior noise distribution $p_z(z)$ to data space as $G(z;\\theta_g)$.\n",
    "\n",
    "The discriminator, $D(x;\\theta_d)$, outputs a single scalar representing the probability that $x$ came form training data rather than $p_g$.\n",
    "\n",
    "The **value function** $V(G,D)$:\n",
    "\n",
    "$$ \\underset{G}{min} \\: \\underset{D}{max} \\; V_{GAN}(D,G) = \\mathbb{E}_{x\\sim p_{data}(x)}[log D(x)] + \\mathbb{E}_{z\\sim p_{z}(z)}[log(1 - D(G(z)))]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Definition\n",
    "\n",
    "Least Squares Generative Adversarial Networks (LSGANs) adopt the **least squares loss function** for the discriminator. \n",
    "\n",
    "The least squares loss function is able to move the fake samples toward the decision boundary, because the least squares loss function penalizes samples that lie in a long way on the correct side of the decision boundary. \n",
    "\n",
    "Another benefit of LSGANs is the improved stability of learning process.\n",
    "\n",
    "### Network Design\n",
    "\n",
    "<img src=\"../../img/network_design_gan.png\" width=\"600\"> \n",
    "\n",
    "\n",
    "### Cost Funcion\n",
    "\n",
    "$$ \n",
    "\\begin{aligned}\n",
    "    \\underset{D}{min} \\; V_{LSGAN}(D,G) =& \\frac{1}{2} \\mathbb{E}_{x\\sim p_{data}(x)}[D(x)-b^2] + \\frac{1}{2} \\mathbb{E}_{z\\sim p_{z}(z)}[(D(G(z))-a^2)] \\\\\n",
    "    \\underset{G}{min} \\; V_{LSGAN}(D,G) =& \\frac{1}{2} \\mathbb{E}_{z\\sim p_{z}(z)}[(D(G(z))-c^2)]\n",
    "\\end{aligned}\n",
    "$$\n",
    "\n",
    "where $a$ and $b$ are the labels for fake data and real data, respectively, and $c$ denotes the value that G wants D to believe for fake data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Training LSGANs with MNIST dataset, Keras and TensorFlow\n",
    "\n",
    "* Data\n",
    "    * Rescale the MNIST images to be between -1 and 1.\n",
    "\n",
    "* Generator\n",
    "    * **Simple fully connected neural network**, **LeakyReLU activation** and **BatchNormalization**.\n",
    "    * The input to the generator is called 'latent sample' (100 values) which is a series of randomly generated numbers, and produces 784 (=28x28) data points which represent a digit image. We use the **normal distribution**.\n",
    "        The last activation is **tanh**.\n",
    "\n",
    "* Discriminator\n",
    "    * **Simple fully connected neural network** and **LeakyReLU activation**.\n",
    "    * The last activation is **sigmoid**.\n",
    "\n",
    "*  Loss\n",
    "    * loss='mse'\n",
    "\n",
    "* Optimizer\n",
    "    * Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "* batch_size = 64\n",
    "* epochs = 100\n",
    "\n",
    "\n",
    "### 1. Load data\n",
    "\n",
    "#### Load libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:01.518979Z",
     "start_time": "2018-08-09T20:02:01.162370Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:02.904841Z",
     "start_time": "2018-08-09T20:02:01.520988Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import mnist\n",
    "from keras.models import Sequential, Model\n",
    "from keras.layers import Dense, LeakyReLU, BatchNormalization\n",
    "from keras.layers import Input, Flatten, Reshape\n",
    "from keras.optimizers import Adam\n",
    "from keras import initializers\n",
    "from keras import backend as K"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Getting the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.108652Z",
     "start_time": "2018-08-09T20:02:02.907072Z"
    }
   },
   "outputs": [],
   "source": [
    "# load dataset\n",
    "(X_train, y_train), (X_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Explore visual data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.611045Z",
     "start_time": "2018-08-09T20:02:03.111061Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Z86cCeSelMJW0zbbbAPkj0W14ImqVTjiiCMAOPPMM4HCT7HFtMLr1VprrQXkyglg2223BWDjjTee7+tWXXXV9PjEE08sT+Yi07lzZyD33dp///3Tc94qX2211YD871ux37MePXoAcMstt6Rpf/zjHwGYMWNGkbmuLG9B+t+vhx9+uJrZSW211VYAvPbaaxV5P7WgREQkSqqgREQkSlF28S211FLp8RZbbAHA4MGDgfwukUI+/PBDAAYMGADA/fffn54bM2YMkBvwB7jssstKkOP6teaaawKw5JJLVjkn8dhwww3TY+8yOvjggwFo27Ztes4sMwb82WefpWneBb3RRhsBcMABB6TnfELA+++/X45sR8N/57p161aR9/OlJwB33HEHkPtbECufeLTeeusB1e3i825XgLXXXhvI/V2A3Pe8LO9dtjuLiIi0QJQtqFtvvTU97tOnT1Gv9RaXT+0Npz37U8kmm2zSwhzWt65du6bHffv2zTsXPt13794dgP/85z+VyViV+GScK664AoDevXun53wqeSHemt99993TNJ9G7eW44oorpufC43r23HPPAYVbUP/973+BXEsnfHovNEFnu+22A3JTneuFt/r+8Y9/VDkn+b1WRx99NJDr0YLytvjVghIRkSipghIRkShF1cXnsfV8tT00HoALu+wee+wxAK688so07csvvwTgzTffBGDq1KnpuZ133rngPSVj++23B+DOO+9M07x7yw0cODA9njhxYmUyVmU9e/YE4He/+91Cr/3444/T41133RXInySx7rrrljh3tefmm28G4JFHHml0bu7cuQBMmjSpSffyKDJvv/02kFs/FQrf5/XXXy8us1USdm1W2+23394ozbuvyy2eUhAREQlE0YLy+Ho+eBrG1vPV40899RSQP2nCB0bDaeNe23/99dcAjBs3Lj3ng6xhC80nVSjSORx++OFA4afQkSNHArko8a1JGOmgoQkTJgC5lfVhJImw5eR8enlrNm/ePKBw+RTLJ6Asv/zy873m888/T49LHO+wpMLJWx07dqxiTvI17EWB3N/qclMLSkREolS1FlQYwfj0008HcjX15MmT03NfffUVAHfffTcAs2bNSs898cQTef82VbiY8tRTTwVyCy1bm3Bq829/+1sgfzrvtGnTALj44osrm7GI+NTaY445BoBnn302PffRRx8BuenRCxPTk3GtCqOT+/+b8He6oX79+pU9T6UQTrtf0OepFP+u+uLc0BdffFGRPKgFJSIiUVIFJSIiUap4F98SSywB5E8N96atxykLY2f5tNByNXnXWGONstw3dr49RLh9SSGDBg0C4IUXXih3lqLlSxf69+/f4nv5FhzSNGHX+1lnnQXkT9X3yByFvPXWW0Bu6nrsNthgg0Zp77zzThVykuF/o8Nu6Q8++ADI/a0uN7WgREQkShVvQW2++eZA4Thce++9N9D8bcOl6fbYYw+gcFzCv//97+nxddddV7E81TLfbHDppZde4HU///nP8/775ZdfTo9jiLtWCd56P/TQQ4H82I8N+eJxWPCGhb4BobeyAJ588kkA5syZ0+y8Vlu5Nwb0JT3+9wDgkEMOAWC33XZrdP1FF10E5CZPlZtaUCIiEqWKt6CuvvpqID/ckLeYyt1y8vAhhaIitxb77LMPAJdffnmjcy+99BKQW7ALMH369MpkrAb4PmWdOnVK0/70pz8BhXsEFvR983GtI488Mk374YcfSpfZyITb3j/66KNAacd/R48eDcBtt91WsnvGoEOHDk26btNNNwVyf1fDVunqq68OwOKLLw7kj+v5dzRsZb766qtAblHzoovmqomxY8cW9wFaSC0oERGJkiooERGJUkW6+HxjO8jF3QsHPL3JX27e1RK+t09FrWc+KA0Lnlb+ySefAPW/AWFThNOXfWKPl124gZt3jXiXXTjRwQeevWsw5N0m++67b5rmE1K+//77ln+AiHk3VFN2FVjYhoXO/8bsueeeaZrH76wVYTeb/4265ZZbADjnnHMW+Fqf7ORl6vEOAb755hsA3n33XQD+8pe/pOd8GU84vOK//x7DMFziU87NCQtRC0pERKJUkRZUWAP7QF0Yu+yBBx4o+Xv6guBCiytHjBiRHp999tklf+/YhBG2F/QUWmjiRGvj389w2u2wYcPyrrngggvSY/8ujRkzBsgf1PZz4QQBt9JKKwFw2WWXpWmffvopkL9/UczRt4vh+zUB7LTTTkBuOvMzzzyTnvv2228Xeq+jjjoqPe7bt2+Jclh9xx9/fHrse635lvYL0/C7895776XnXnnllaLy4TEn/TvqPSvVoBaUiIhESRWUiIhEqWrbbYRdF76lRil4155vYuhbeUBu0O+qq65K08LtO+qNT0gptCLcDR8+PD0eP3582fMUo3BChHffhd8b54PuHp8QcivqvTvEoxdALmpEOOlhwIABQK7bz6OnAAwZMgSA559/Pk274oorAJg6dWqj/NTqBB/vvrrkkkua9fqw276euvhC/v+9GnbZZZe8/15YvM5yUgtKRESiVLUWVCmnlntLAXJPvr179wbyWwi9evUq2XvWAt9Yr9B22D5wesQRR1QyS1Fp06YNkIsvBnDaaacBMHv27DTN47vdf//9QH4csi5dugBwww03ALkp6QAffvghAMcdd1ya5lHhPQZaOAjuK/x79OiRpjXcWjvcJr3QRnKtgW/zLpXx8MMPV+291YISEZEoVaQFFS7I82OPCQdw0kknNeu+J598MgDnn39+mubbxnt/fri3VGuzwgorAIWnlt90001AfY/BLYxPp/VWE+QWNR577LFpmrdEt9lmGyA/fp4vDPWlFBdeeGF67s477wTyWz3Oo28//fTTaZof9+nTJ0076KCD8l7n3/mYhWN6Pv4ZLu1obnRxL3dF2G891IISEZEoqYISEZEoVaSLL4x958errLJKmnb99dcDuRhRU6ZMSc95t4pvbuZh5SEXRt5XUUNuVbp3YbVG3rUUxjFrKNwor7Xq169fozSfOBFOM/dpzeFW4w35NWFkiOZunzF06NCCx7HzzQXPPffcNG3XXXcF8id0FOrybMgjcoTbmPhWPYViG3q3YVMiUUjT+HDM+uuvn6YVG5WipdSCEhGRKFVtmrk/qUIuBpVPA/cBZID11ltvvvfwVoBP3YXCT8WtQTjV3jcr88kR4ULRG2+8EVDEcoBJkyYBuUW2kFvoHbbUnS/CffHFF9M0j302YcIEoL43HVwYn2pfKPbgGWeckR7PnDlzoffyltcWW2yRphXa8n3kyJEA3HzzzUD+3wJpGS/vBfXElJtaUCIiEiVVUCIiEqWKdPGFm7i99tprAGy11VaNrvOJEx07dmx0zidO+Gp+aP76qXq03HLLpcfhBBSAL774Ij0O1/y0djvssAOQvybPu5TC7WB88o7Hw6v3DQXLIYym0Vz+/+Sxxx5L0/xvgCZHlM+2226bHt91110VfW+1oEREJEoVaUF5FHHIbXEdrtT3yOOF+KpxHwT96KOPypFFaYV8sP7ee+9N08JjKY7HdQwjjB9++OFF3ePjjz8GchE9Ro8enZ677bbbgPzND6V8wghA1aIWlIiIRKni08x976dwT5dC27JLcd5///302Kff+8JJkUrw/anCrcv/+c9/AnDxxRenaR5d36fohxHbffcBXwIglef7nu2///5VzolaUCIiEilVUCIiEiUrtDp7vhebNf3iOpckSYtHEFWeOSrPkhubJEmXltxA5ZmnxeUJKtNQU37n1YISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoFRtJYjIwsRwZqTFrlug+Ks8MlWfplaJMVZ45+o6WVpPKs6h1UCIiIpWiLj4REYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYlSVSsoM+tvZoOrmYd6ovIsPZVpaak8S6vey7PsFZSZHWRmr5vZLDP7ysyeMrPty/2+88nLBDObk83LLDN7thr5aImYyjObn5PM7N9mNtvM3jOz9auVl+aKpUzNbI3gu+k/iZmdWum8tEQs5ZnNy2ZmNtrMppvZ52bWrxr5aInIynM7M/unmc00s/8rdz7KWkGZ2SnAtcClQEdgDeAmYO9yvu9C/CZJknbZn92qmI+ixVaeZvY74ChgL6Ad0B2YXI28NFdMZZokyafBd7Md8HPgR+ChSueluWIqz6z7gBeBDsCOwHFm1qNKeSlaTOVpZh2AR4GBwHLAAOAxM1u+bG+aJElZfoBlgVnA/gu4pj8wOPjvvwGTgOlkvlSdg3PdgHeBmcAXwGnZ9BWBx4FpwP+A0cAi83m/CUDXcn3mcv7EVp5kHm4+A3apdtnUS5kWeO8/AS9Uu5xquTyBb4BODd7v7GqXVS2WJ5kH0HcapH0AHFWuMihnC2pbYEng4SJe8xSwHrAy8AYwJDh3B3BskiTLABsDI7LppwKfAyuRecI4B0gW8B5DzOxrM3vWzDYtIm/VFlt5rp792djMPst2811gZrU08Sa2Mm3oMODuIvJWbTGW57XAYWa2mJltkM3j80Xkr5piK0/L/jRM27iI/BWlnH9MVgAmJ0kyr6kvSJLkL0mSzEyS5DsyTwabmtmy2dNzgU5m1j5JkqlJkrwRpK8KrJkkydwkSUYn2aq9gIOBtYA1gReAZ8xsuaI/WXXEVp6rZ//djUxX1K+BPmS6/GpFbGWaMrNfkflj8WCRn6maYizPx4H9gDnA+8AdSZK8VvxHq4rYyvNlYDUz65Ot8A8HfgYs1czPt1DlrKCmACua2aJNudjM2pjZ5Wb2sZnNINMdB5nmJ0AvMk3UiWY2ysy2zaYPBD4CnjWzT8zsrPm9R5IkY5IkmZMkyTdJklxGpkn7q+I/WlXEVp5zsv8OSJJkWpIkE4Bbs/esFbGVaehw4KEkSWY19cNEIKryzI6ZPA1cSKYl8lNgdzM7vhmfrRqiKs8kSaaQGfs6BfgPsAeZ1ujnxX+0JipX3yG5/tP9FnBNf7L9p8ChwHvA2mSajcuRaWau2+A1iwEnA58VuF9n4L80cVwk+349ylUG9VyeZJ6avgN2CNJOBR6udlnVapkG17QlM4awc7XLqJbLE+gCTG2Q9kfg8WqXVS2WZ4FrFwUmAruXqwzK1oJKkmQ60A+40cz2MbOlss3CPc1sQIGXLEPmD94UMn/8LvUTZra4mR1sZssmSTIXmAH8kD3X3czWNTML0n9oeHPLTOH9ZfZeS5rZ6WSeLMaU9pOXR2zlmSTJN8ADwBlmtoyZrQ4cTaZLpSbEVqaBnmRa9y+U4GNWTITl+UHmcjvIzBYxs1WA3sC40n3q8omwPDGzzbN5aA9cCXyeJMkzpfvUDVTgKeBg4HVgNpnZJU8A2xWo/dsBw8nMMJlIZoA4AdYFFifTVJ9KpgBfA7bPvu5kMk3Z2WSamufPJx+dgf/LXjcF+DvQpdpPSbVantlr2wP3Z9/jMzK/TFbtMqrlMs1e/wxwUbXLpR7KE9g5+9rp2bz8GViq2mVUw+U5NFuW08k8oK5czs9u2TcVERGJSi1NCRYRkVZEFZSIiERJFZSIiERJFZSIiERJFZSIiESpSSuUnZlpyl9WkiQNY1IVTeWZo/IsuclJkqzUkhuoPPO0uDxBZRpqyu+8WlAi9WlitTNQZ1SeVaAKSkREoqQKSkREolTUGJS0Duuvn9u1/emnnwagTZs2AKy55ppVyZOItD5qQYmISJTUgpLUoEGDAOjdu3ea1qFDBwAef7xmgpSLSJ1QC0pERKKkCkpERKKkLr5WqmPHjgAMGzYsTdtmm20ACLdgefvttwE46qijKpg7ERG1oEREJFLRt6B8evOyyy4732tOOOGE9HippZYCYIMNNgDgD3/4Q3ruyiuvBKBPnz5p2rfffgvA5ZdfDsAFF1xQimxHy6eQe1n84he/aHTN2WefnR6//vrrAEyZMqUCuRNpmaWXXjo9HjlyJACrrbZamvbLX/4SgAkTJlQyW9JMakGJiEiUqtaCWmONNdLjxRdfHIDtttsOgO233z49t9xyywHQq1evou7/+eefA3D99denaT179gRg5syZadq4ceMAGDVqVFH3r1U+bbxbt27zvcbLDuCFF14oe55EmsJbQiut1Dhm69SpUwH49a9/naZtueWWAIwfPz5NU09AbVELSkREoqQKSkREolTxLr7NNtsMgBEjRqRpC5oAUawff/wRgPPOOw+AWbNmpeeGDBkCwFdffZWmeddA2A1Qb8LYevfddx8AZo23Ytl3330BGD58eGUyVudOPfVUINeFDbDRRhsBcPDBBze6/v333wegc+fOFchdPDbeeOP0+MQTTwQKx3z073E4POB8klOnTp3SNP+Of/HFF2la+P+itfCJUIcccggAO+64Y3qu0HfttNNOA+DLL78E8odcBg8eDMCrr75answ2oBaUiIhEqeItqE8//RTIH6wspgUV1tzTpk0D8gdGv//+ewDuvffeFuWznhx66KHpsT99PvnkkwD8/ve/T8+FT5rSNP406q2A8OnUJ+UUaq2Gi6HdeuutB8C7776bpoUtgnq18847p8cLWhD+3XffAbmn+PC1Z511VqPrvYzvuuuuNK21TJII42led911AKy44opA/vfRp+KHE08GDhyYd6/wer/uwAMPLG2G50MtKBERiZIqKBERiVLFu/j+97//AXD66aenad27dwfgzTffBPLXLrm33noLgF133TVNmz17NpA/0HfSSSeVOMe16+WXXwZyE1Mgt4L+5JNPBtStNz+rrrpqejx06FAA1llnnUbXefe0RzAIu0PGjh0LwBZbbNGk91xkkUXy7lXv+vfvD+T/LXB33303AF9//XWa5tFPwjT/bj/zzDNArhsrvO7BBx8sYa7jtOiimT/lXbp0AeDPf/5zes6j67z44osAXHTRRem5l156CYAlllgiTfvrX/8KwG677dbofTyyTKWoBSUiIlGqWiSJRx55JD32Kece4WHTTTdNz/mgqT89easp9M4776THxxxzTOkzW2P23ntvIDe9NByQ/9vf/gbkYhBKvq5duwL5T6A//elPm/z6cFLD5MmTgfyneo+GcOeddwKw+uqrN7pHOEminnlLsW3btmnaxIkTATj33HOB/CUhbt11102PzznnHCA3eB/+ffAWWmv4rvsU8ttvv73Rueeeew7ITZyYMWNGo2vCSRUNW05hZBlv2VaKWlAiIhKlKKKZN6zRp0+f3uiao48+GoAHHnggTfNFuZKLWQjwq1/9ar7X+cLk8KloQXxMr1Arwhf01ZMzzjgDWHCryac7A5x55pkAvPLKK0DhBd/h1GYvz0ItJx8fDJcF1DMfG9pjjz3SNG+B+sLb448/Pj3n431XX311mrbXXnsBubHtSy65JD138803lyPb0QjHkrwl6b0lN910U3rOgxYUajk5b7EW4ounIX/8rxLUghIRkSipghIRkShF0cXXkA9uQi5kvq/Q90FsgGeffbai+YrZDz/8kB57mfm05bAr1KeaFuJTz0N9+/YFCsdG81hzYXdVLU5bDweFfdv7QjwKStgFN2bMmKLeq1DXnvMYiD65ot750hHvHoVcF59HiAiXlVxzzTVA4Vh8vtHooEGDypPZiPTr1w/IdetBLoKOT7f3rmeAOXPm5L1+ySWXTI/9ux+WqS+VuPjii4HqxuZUC0pERKIUZQsqnCrqkyPeeOMNIH/6r2+mFy4eu/HGG4HCsc7qWRgDzidJeMvJn/yh8dN5uIjXX9ejR49G9/f/J+Hkig022ADIXwjpMbp8unAt8JYg5BY1hnzBsz+lN7XVtPzyywP5kwB22GGHgveGXHzE1sInmxQavPfp+A899FCa5k/24e/2HXfcAeQvW6lH4SQonzgSloO3nPbZZ5/53sOn5/uuDpDrbQn57/OAAQNakOPSUAtKRESiFGULKvTxxx8DcMQRRwC5BY6QGwsIxwR88d8999wDFF7oV0+WWWYZANZee+1G53w/lzCy+0cffQTk9tYJw8z4At+wleXjfFdddRWQH3neF1iXcj+varjtttvSY19UGy51OOiggwCYNGlSUff1SPHhdGDni8sPOOCA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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i+1)\n",
    "    x_y = X_train[y_train == i]\n",
    "    plt.imshow(x_y[0], cmap='gray', interpolation='none')\n",
    "    plt.title(\"Class %d\" % (i))\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    \n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reshaping and normalizing the inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:03.616255Z",
     "start_time": "2018-08-09T20:02:03.612986Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train.shape (60000, 28, 28)\n",
      "X_train reshape: (60000, 784)\n"
     ]
    }
   ],
   "source": [
    "print('X_train.shape', X_train.shape)\n",
    "\n",
    "# reshaping the inputs\n",
    "X_train = X_train.reshape(60000, 28*28)\n",
    "# normalizing the inputs (-1, 1)\n",
    "X_train = (X_train.astype('float32') / 255 - 0.5) * 2\n",
    "\n",
    "print('X_train reshape:', X_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Define model\n",
    "\n",
    "#### Generator\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:06.592374Z",
     "start_time": "2018-08-09T20:02:05.526273Z"
    }
   },
   "outputs": [],
   "source": [
    "# latent space dimension\n",
    "latent_dim = 100\n",
    "\n",
    "# imagem dimension 28x28x1\n",
    "img_dim = 784\n",
    "\n",
    "init = initializers.RandomNormal(stddev=0.02)\n",
    "\n",
    "# Generator network\n",
    "generator = Sequential()\n",
    "\n",
    "# Input layer and hidden layer 1\n",
    "generator.add(Dense(128, input_shape=(latent_dim,), kernel_initializer=init))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 2\n",
    "generator.add(Dense(256))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 3\n",
    "generator.add(Dense(512))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Output layer \n",
    "generator.add(Dense(img_dim, activation='tanh'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Generator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:06.601583Z",
     "start_time": "2018-08-09T20:02:06.594445Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_1 (Dense)              (None, 128)               12928     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_1 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 128)               512       \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_2 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 256)               1024      \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_3 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 784)               402192    \n",
      "=================================================================\n",
      "Total params: 583,312\n",
      "Trainable params: 581,520\n",
      "Non-trainable params: 1,792\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "generator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.436658Z",
     "start_time": "2018-08-09T20:02:07.134694Z"
    }
   },
   "outputs": [],
   "source": [
    "# Discriminator network\n",
    "discriminator = Sequential()\n",
    "\n",
    "# Hidden layer 1\n",
    "discriminator.add(Dense(128, input_shape=(img_dim,), kernel_initializer=init))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 2\n",
    "discriminator.add(Dense(256))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 3\n",
    "discriminator.add(Dense(512))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Output layer\n",
    "discriminator.add(Dense(1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.443796Z",
     "start_time": "2018-08-09T20:02:07.438685Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_5 (Dense)              (None, 128)               100480    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_4 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_5 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_6 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_8 (Dense)              (None, 1)                 513       \n",
      "=================================================================\n",
      "Total params: 265,601\n",
      "Trainable params: 265,601\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "discriminator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Compile model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Compile discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:07.842045Z",
     "start_time": "2018-08-09T20:02:07.804575Z"
    }
   },
   "outputs": [],
   "source": [
    "# Optimizer\n",
    "optimizer = Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "discriminator.compile(optimizer=optimizer, loss='mse', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Combined network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:08.602791Z",
     "start_time": "2018-08-09T20:02:07.844004Z"
    }
   },
   "outputs": [],
   "source": [
    "discriminator.trainable = False\n",
    "\n",
    "z = Input(shape=(latent_dim,))\n",
    "img = generator(z)\n",
    "decision = discriminator(img)\n",
    "d_g = Model(inputs=z, outputs=decision)\n",
    "\n",
    "# Optimize w.r.t. MSE loss instead of crossentropy\n",
    "d_g.compile(optimizer=optimizer, loss='mse', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-09T20:02:08.610389Z",
     "start_time": "2018-08-09T20:02:08.604800Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, 100)               0         \n",
      "_________________________________________________________________\n",
      "sequential_1 (Sequential)    (None, 784)               583312    \n",
      "_________________________________________________________________\n",
      "sequential_2 (Sequential)    (None, 1)                 265601    \n",
      "=================================================================\n",
      "Total params: 848,913\n",
      "Trainable params: 581,520\n",
      "Non-trainable params: 267,393\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "d_g.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. Fit model\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:01:56.549495Z",
     "start_time": "2018-08-09T20:02:08.612634Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 1/100, d_loss=0.172, g_loss=0.652                                                                                                                                                                                                                            \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXn8bVP9/5+fyb2GW26mzDIkM2UWZS4KoZFoMIUyUwiF+Go2pVT0lRLfkEyRKTIrZMg8R6EJXde993N+f/Ba6733eZ99zvl89rmd+3u8n//cc9fan73XXnvtvdZ7XAONRoMgCIIg6DcG/9sNCIIgCAKPmKCCIAiCviQmqCAIgqAviQkqCIIg6EtiggqCIAj6kpiggiAIgr4kJqggCIKgL4kJKgiCIOhLYoIKgiAI+pLhbg4eGBiItBNv0Gg0BsZ7jqr+nHPOOdPvV155pfx3Xnu887es6zfq6M/BwcHG8PAw06ZNS2Xd9sFss80GwIwZM1LZ6Oho4Vz6v6XqOvZ56bnqmQ4O5jWivWYr5p133vT7hRdeqGrHC41GY762J6zA60+x9NJLp98PP/xwoW5kZCT99v62jO2fXo/VTp5TizaMuz/fuEZjYGDAvYYdC+UxNv/886fff/vb37zzAv/d/uuWTt75riYoeL2BdkB1+7IOD79+yenTp3d76cK5W52/iqGhIaCzD8HMYmhoyG3Pqquumn7//ve/L9TpI2qZOnVq+q0+Ul9XfWzb9We5rN3xVc/evoDl9tTB8PAw8803H3/5y18KZUDlpGXvacEFFwTg5ZdfTmX/+c9/gNx+/d+ij7Id1zqvfV6rr746kJ/ppEmTUt2//vUvwB+fuvbWW2+dyn784x83HadrTZ069Ymmyi4ZHh5mgQUW4Omnn25qx7e+9a1UZtsEMN98+Ttun4XQe6hnP2HChFT36quvtmyP/s6ivlK77LhTme1Pbzx0UgeMuz/h9TExYcKEwn2qnbPPPnsqmzJlCpD7aIcddkh13/72t4Fif2j86TtQx4LVWwjrOq+99loqK39XqyZa1Xf63g9085H3VvxVH/155pkHgBdffLHy+G46rt0HsmoC9K6tzuy0w2abbTamTZvG6OhoTyQob+JQ27wJx2u/92IKfQw0kLud8L3j7Ysy1sm/Lol0aGioMCHoPt/0pjelMvWBJBDvvo844oj0+ytf+Qrg96skiX/84x8A/P3vf091el76F/KHR+ey/bneeusBcOONN6ayOeaYA8jP106OXnsWXXRRAJ588sk7Go3G6k031gXdakwmT54M5HuEPFk99dRTqUz9r3fU9n+dC5Zu0bixH1jzwR93f0LuU+8j7mlNvHFSNRFUfQ867duq471venlx1k6LsMMOO3DppZfy4osvtn3nwwYVBEEQ9CUxQQVBEAR9ybhVfG2Ob1nWsQ6ypPJq93cSN6uMs1bl0q0tTAbOulRS3ehjRbcqtaOOOir9lrpKz/3Nb35zqpPdxZ6zE7udp/brVq1QV3+WDdDeGNxnn30AOOOMM4Ci2uzJJ58EYKGFFkplUr1oTNmxpbrFF18cgPvvvz/VeX2msac22v6R6svq91Wm4+x4VZkdDzrvjBkzeqLi68SG7L1fVapkb7xp/Ky77rqp7qabbgKKfVb1/aqyeUoValWPokVba1XxWcpqd9uG8vtkj7eq1DK77LJL+i1bpWdzLdukLd7xej5S9QH89a9/ddts8fq0k3c+JKggCIKgL6lNgpo4cWL6XeWJ06+uz522a9KkSbzyyivMmDGjNicJb/ViPfe0iux2heLVlQ3rm2++eaq74oorAPja176Wyr70pS8BeVW84oorprp7770XKK6myxKXt5q27RsZGWH69Om1OJ0MDg42yh5SkhCXWWaZVHb77bcDuV88Y3OVM4jnFeZJFJ14Utn+ectb3gLA888/n8rk5SejuSeR2nfPrKprk6C88WmlPGktOl2FdyL16D533333VHfVVVcBcPTRR6eyHXfcsfB373//+1Pdr3/965bXs67wwpN4JUk//fTTtUhQ3hgVViKyHn1v/F36XXaIsGXjaFdt5/KwjksaOyFBBUEQBLMsMUEFQRAEfUnXgbqtsCK/UOyJDXoULYxmdTWnY5ZcckkAHnvssZbtskGz99xzT+0isL1vicKKifGO89SpNthRxlappDyjqFQIjzzySKqTMdWqmKQmkfPAhRde2NQuq45Qe9RWL0C2HNNR13NvNBpNqhM5QEitZ6/vjbtug5V1f52qX8tY1aDisj72sY+lsssuuwyAueaaCyhmFZFKapNNNkllF198cct2jBV7Lj1rO97KqK0AL730EgCf/OQnU9lZZ50F+HF9Ur3JicGqve677z6g+D3R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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 2/100, d_loss=0.140, g_loss=0.677                                                                                                                        \n",
      "epoch = 3/100, d_loss=0.105, g_loss=0.674                                                                                                                        \n",
      "epoch = 4/100, d_loss=0.104, g_loss=0.753                                                                                                                                                                                                                                                                                                                              \n",
      "epoch = 5/100, d_loss=0.102, g_loss=0.744                                                                                                                        \n",
      "epoch = 6/100, d_loss=0.093, g_loss=0.653                                                                                                                        \n",
      "epoch = 7/100, d_loss=0.101, g_loss=0.759                                                                                                                        \n",
      "epoch = 8/100, d_loss=0.083, g_loss=0.689                                                                                                                        \n",
      "epoch = 9/100, d_loss=0.080, g_loss=0.706                                                                                                                        \n",
      "epoch = 10/100, d_loss=0.077, g_loss=0.784                                                                                                                        \n",
      "epoch = 11/100, d_loss=0.084, g_loss=0.706                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnWW0JNXVhp87M+gwwACDuzsMngDfCgECwQmSRQgQ3N1J0AQnGYggIQQPLgsJ7hDcJbhLwuDB7X4/yHtqV9+6fbtvW/XkfdZiTXNO3+rq01V1zt7n3Xv39Pb2YowxxpSNIZ0+AWOMMaYIT1DGGGNKiScoY4wxpcQTlDHGmFLiCcoYY0wp8QRljDGmlHiCMsYYU0o8QRljjCklnqCMMcaUkmH1vLmnp8dpJ/5Lb29vT6PH8HhmeDxhggkmAOCLL75oxuHe6e3tHdXIAQY7nj092U85DmWqaXg8ofuv0WZSyz3fFgtq2LBh6T9TXnp6enIPFzMwzRyzWWedlVlnnbUpxwJeadaB6mUcvd87Np7NYujQoQwdOrTTp1EXbbmCvv7663Z8jGmQcWi12zaaOWbPPPNM047VSb766quOffZ4441XivMoI998802nT6FuvAdljDGmlHiCMsYYU0pK5SSWL//qq69ObautthoAQ4Z8N5d+++23fd4/0UQTpbbJJpsMgB122AGAAw88sKbPtHvLmO5Fz4eB3Hr/K/f7euutl15fcsklub4iN6jGD/LP2E5jC8oYY0wp6alnJTFYiWRU80gwscIKK6S22267Dchm7vHHHz/1SXXy2WefAcUz/bTTTpvaZp55ZgCef/55AN5///3UV++qae655wbg2Wef7dPXTln0/8Kqb1yRmUdFn67VDm1OP9jb27tEIwcow3hGirwoN9xwA5B5WuJY12sJ6Dnyr3/9q6i74fGE1o9p0RiJKaaYAoCPPvootel98jzF1y+//HKrThMokczcGGOMqRdPUMYYY0pJ3SKJnp6eul1NMQ5KJugtt9zS7/u//PLLqp8v5Dr84IMPUls/5vmgGDFiRNOO1QjjsmtvXCP+VtVce9qo/stf/pLadt55ZwBef/311CZ3y//KNaDng/79/ve/n/o+/vhjAEaPHp3aLr74YgAmnnhiAPbcc8/Ud9BBBwH5Z4a2DIpiM5v57OgURdfJjjvuCMAWW2wBwGyzzZb6Hn30UQBmnHHG1HbFFVcAsNdee/V7zFqp5nKs6e8H/cnGGGNMC2mpSEIWTlytvPXWWwBMP/30qa2WzWStkIYPH57atHo644wzUtsSS3y3j7nHHnv0+eyi4w92hu+GTf1axBUx9UkzNvN1vGmmmQaAN998s6a/64bxrIa+dxzratfUoosuCsBDDz2U2h555BEAdt9999Sm63jOOecEYIEFFqj1lNomkmimiEfHeuqpp4D85r2uqYjuX332Cy+8kPpkTV111VWpTc8keWmKBFz90BUiCV2H0ZI88sgjgeJnXeX4Abz99tsArL322gDcd999qa+ZlrxFEsYYY7qWhi0oScKr7RtFafhyyy0HwJ133hmPC8AyyywDwNixY1OfJN6SgMYgs8svvxyAueaaq89nytL68MMPU9vyyy8P5HOeVa6aooX2ySef9Pudun3FX5TgdNVVVwXgqKOOSm3zzDMPkPmqjznmmNR38803A3DXXXelts033xyA+++/H4AJJ5ww9X366af9nk+rxrNRH/hAnHTSSQDcfvvtAJx//vmpr9q9pZW7wiEgC5F44oknUttCCy0EwIYbbgjARRddVOuplcKCqvZ8kDUorwr03ZtecMEF+/xdfJ5UEj/nxBNPBGC//fZLbQ1kim+ZBTXppJMCefl3LUTvh46x0korAXDOOeekPl1r8mbEsBzt6+nvi4hW+9NPP13XOVbDFpQxxpiuxROUMcaYUtISkUSlOEJuPYCpppoKyDZBIdvYrJZPa/LJJwfy7oC9994bgDPPPDO1bbTRRgCccsopfY4hE1euPoAXX3yx3+9RzXXR7S4+1R2Smw7y8tNK9JtE9+iNN94IwHzzzZfaNttsMwBmmmkmAB544IHUVySaEa0aT7lsq7lr6yW6jd977z0gc0XV+jm61g899NDUJldUFEnITTUIF2WpMkmoGCPAqFHf1f2TuCkKFfSsKKpbpPswPh90j1aKHyBzX+k5AXD66acP9iuUWiSh60n33+9///vU98477+TeIxk5ZAKIXXfdNbUtvvjiuWNLvAN5iX+j2MVnjDGma2laNvO46V65Qo6b6P/+97+B/KacJOTVMhGvtdZaQH4DWRvUcbV16qmnAtlmnjb+IZPsxhVwNcbF4Mgpp5wSyCyhmPdQ3zf+lqeddhqQ5UuMmeZnn312IMuDBrDLLrsAmWX68MMPp75O5KRrpuU03XTTAflrV6/rraqrAFSNV+Sll15Kr+u1nDqZt1FWTBQxbLnllkAmkwf40Y9+lGuL12A1AYSEVfFYyul58MEHAzDHHHOkPoWcyAoFOOuss4BsfMqUubsRVNFBArOVV1459S255JIAnHzyyUD++azrRc9ggIUXXhjIBGn/+c9/Up/eV03w1ExsQRljjCklnqCMMcaUkqa5+KJLYamllgKyzVCZlpC51xZZZJHUVouZLdNc/0aKXEd33HEHkIkBoDj2RBktVM4jumrGFRff0UcfnV5vs802QOZWiea+zPZ11lkntVXLmahN6F/96lepbcUVVwTg73//O5B38cWsCd2EYrkOP/zwPn269qrFARZx3nnnAflim4cccgiQd6PWSyeuWbk+5erddtttU9/nn38OwO9+97vUJlfdq6++CsBuu+2W+uadd14AHnzwQSAvipKgJMZCCh0/Zj3QvRzfr+te9/u4glzZMWuGuOeee3L/H2MTdf1Wi4M67rjj0ut2j5stKGOMMaWkJSXftYpRgay4ipbUO66MWoFWklFuWVQivrIQ4riwabr//vsD2Qr1ggsuSH2S4d97771AXl6qsXjjjTdq+hyJU/Q5AGeffTaQZZyImea7FV1LypIRrU5lI6/VgpJlqezRsjAAjjjiiMZPtgMoC/gPfvADIJ8PTx6MKG3WvaZx3GSTTer6vHiPyisij0mRB+S5555LbeOa5VQP8mjNMMMMqU0iKPVFlHUj9rXbQrcFZYwxppQMyoKKGYaLJNtaIalvjTXWSH1RUtpKlLssStB1XtEHq3OUjP3uu+9OffXuK3QCfaeYQ1BSW8nAZS1BtuJXvr16v2MMqtxnn32AfOZkBZlqXJsp824n8bpZf/31gWzPLVrg11577YDHitLpGPYA+az+3brnqfvpF7/4BQCvvfZa6pPEOVo9jXopYtCvAs11DkWZuuN+dydl+J1C9+xf//pXIP88VtjP1FNP3efvlPdRf9cJbEEZY4wpJZ6gjDHGlJJBufgGysQgM1ouoE033TT1DVAUrGH02ZJWv/zyy6lPm4NRei6XgHKpKWNCtyBXRRzjG264Achk41FWf9hhh/V7rKJsCJXZJWIew8UWWwzIu0UVYiCBTLXsIK2gp6enqYXzoDi0QdQi9oklHnRcuVbff//9wZ5iadB3ktt4zJgxqU/F7xo9NsDcc88N5EVX0d0KeXeq8n22+plTdjbeeGMAfvzjH/fpkwAiCp00pueeey7QWXeoLShjjDGlpCUy87/97W8AbL311kA+2LOZs7I2/+IqS1bbmmuuCeQllVpRzT///KlN71MQoPL7xeN2IodcNeL3VUG7aBX+8pe/BPIb8LWggMZll102tSn7vPLDxTxxTz75ZO7vIFvBxvxd7aTR66roN5dkfquttgLyMuqYG7ISrVyL8svpNxoXAsNlqStYVsG20LgFHcUqstQrraZIvO6+973vAflx1WuVj5dIYFxB15qKuQKsvvrqub6Ixis+JyvFbTFwvN3PQltQxhhjSklLLKh9990XyOTNcVWzyiqrALXJc4uIq/URI0b0aTv22GMBWG+99QC4+OKLU98kk0wCwPXXX5/atKKS1dANgbpRqr/BBhsAsPPOO6c21dSRHLeozLWsz7gi0hjETMWq+aTM0DHEQH7ruErW8Yrq+XQDuh6UJRuy8da+mq4jyDJlX3PNNUA+rZfGqmhvT3L/brWaIrJoVBsrVi8YLFrtx6Dxaul4lJ1f1QwgG9uiMa51b6zaPVQm9CxU4K2sJuhrOcXS8gpPic89HUtZ4zv5TLQFZYwxppR4gjLGGFNKWlLyXW6eojxsM888M1B/hgGZqTEzt3KjaTM6Hlcb+EUy3uhykXtQWQJqzXTRiZLv0047LZBJ4iHLXhzdnHJ3bL/99kCWpwzgJz/5CZC5sKJg5PXXXweygmWQjfHjjz8OZL8fZKWkt9hii9T2xz/+EcjcArVuqrZqPHU9xEwbBX+XXisjQZTt61qK41iJvm+1gnuQuUMvu+wyIJ+HTtLzmCmhAddS20q+X3nllUB27zz66KOpT9elioVC5nJbeumlgayAIWSuarlHY+YSjW2R6EHZTHT9QXV5+SBcd6Ur+R7d6DvttBMAP/vZz4BMPAWZC1au+8ceeyz1aRxiHsgzzzwTyH7HKIzS9doMt59LvhtjjOlaGragtKEWhRBHHnkkADvuuGPuPRHN+JBtLGtWjitazf7Kwr322munPklFr7vuutR20EEH9Xv+o0ePBvIrCK2yJMuMtZCq0U4LSitHZcCOm9CyEKLMXBmbZRVqcx+y8dQYR4HDrbfe2uf9Kk1eJL/W79Wu1dRA1Ls61bjGlajGI1pCslwl8DnhhBNSn8YzrvSroftNGcBjnsR11123ntMfiJZYULoO4phJoqx6X1FIo/fp+0JWD0q1wyaffPJq51D1HGUpKISkSLbfpE3+0llQ8ZrTb6A8iNETpGu6mjcjCn8ktJDYKo6fPAt6VsDghT62oIwxxnQtnqCMMcaUkpaIJBSDpA3nc845J/VpU1IlnSFzmSyzzDJAlg0CMi2+crypGB/AXHPNBeSLkE055ZRAVojv0ksvTX1yN8QCZnLl6N9aI9874ZIS0b2i7xLHU5uayuQR3a8zzTQTkJnlMa/ihRdeCGRZNSCLtJeZ36q4nU6OZyOcfvrpQLY5HV0rcqk88sgjqU15EpWdIo5/k+NNWiqSiNegXHoq2RCza+h90b1ULUZOLneNS8x1qAwVsUSMxD4SwcS8kNUEEIO4jkvn4msVEgPJ9RrHSlmCYiHYGDdZC0OGDOHbb7+1i88YY0z30hILSqjQmwpfAYwdOxaAkSNHpjadg1aaKnIGWbYCRZGvvPLKqW+BBRYA8gW1ZCEow0LczJPFpSJnkMnWda6ywCBb0cbNSK3wOrHil2RXBQkhk4YXrWJUsHDxxRdPbRoXSXyVCQEy6fMf/vCH1BbHu5V0qwUlCz9a5UIy/1NOOSW1tTFzRNssKAkTXnnlFQCmm266Pn1F31tt0br6+c9/DmReFJWRh0xKvtdee6U2bdrr3o7XrrwiyicJ2fNEVl9RKEw/jNMWVAzDkLxcoqzogfn888+BfLiJRRLGGGP+52iaBaWcbZD54SVzjtmfFQQaZ+x55pkHyGbnaMVIRq2MurLAIJOpqtQ0ZBJpWWjnn39+n2PF+kjK+K3PjEGS1cqhd3LFH8du4oknBvLjUg1Zg9rviwF6WhXFVehvf/vbwZxi3XSTBRX3mbT/WRREuuWWWwLZPtVgaKBEedssKHkhZOHLcoRsHyheswoElWWjfY14DIV96JkAmRclBqHqt9hss82AfPiKZPsKJIYsTEXHquP6brkFVSSRb3WJ+gMPPBCAlVZaKbVVhpbEPX6F4dx0000Nf7YtKGOMMV2LJyhjjDGlpOFyG5J5RhOxcnMyprY/5JBDgHzZZpW/UDSzIpgBrrjiCiATLMQodUnJizIBxI1RIan6s88+m9okhZfboMzlNuTOiK5HbSar3DbkTfJKJPKQIEXfH7KMH+0u094t6DqLLuLK3HvRJXXGGWc0/JmtdvEMlihsUPFFSegV3gDw5z//GcjfVyrHIzeb5OmQ5ZFUSYh4b2us4xaASsTombHffvulPt0H8X4466yzgOru+05R9BsrQ0QsO1LL38Zx032trCcxV6JcsBJEQDY2crcuv/zyqU85OWulKMygHmxBGWOMKSVNE0nEMuEK4ory5naj1YIEGJBZDVFQMGrUKCBbndVqQbVzU1+raH2nmCvvzTffBPLF3KpJZ2UxyfKNAXdamca8frG4WX9EK2KwFmgnRBK1Wid6nyTPcYNYfcqaH1f3HbZ62pbN/Pjjjwcy6zEWDVTfaqutltqUo1PhIUWra42rxDyQZd6P2c8XW2wxIAsvidULDj/8cCALioZMBDUIy7StMnOdnyT78Z7WOGy11VapTeEOEn3FMdUzUBbRQEHTErfNMsssQH5Mm3lNWyRhjDGma/EEZYwxppQ07OLT5qRS6EOWw6mOKO2OoVIdKqVQK50sDxHLE8gFV604W4zb0Qb1hhtuCGTZOABOOukkAMaMGZPalNevyHXXbnN/IFodB/X0008DebexNpm1mf3uu++28hTqoW0uvsrif9Hlqzg9xSkBnHfeeUDmlotZZZRLT66n6LpW2ZOYb0/XpYQr0b2o+LOYCUYFDWOhyBrpSCYJnXssyqrYRZUbgmzMBypPAvlnhd4fhRNrrLEGkM+D2Ars4jPGGNO1tDQXX5F11WoqNz+1goNslaWNxEhl5PZAtHPFv8QS3y3cJMeXsAMy2X0s+f7ee+8BWfR+LF+uzWpZTlHiq76YGV3HlWUwkAhCK996s593QnSicxtI5HHJJZcAsOaaawLFmby1sdwMijIKDIK2WVCiKAxCIod77rkntUlIonCGeD2r4J428rVRD9l1rbLwAKuuuioAm2++OZD/LZWnUhlkIBvPbiv5Hq1AiRZuueWW1KZrU8TrRtkflFPvgQceSH26bpvhDZGIq1qYS8U52oIyxhjTnbTUguoEjQaG1UpZ9kyK5PFatd52221A3ucs//12220H5FdmCgaMK+A6VpgNUZbxLEIr/pdffhnIj4/2Vq666qpBHTtaY7Vcs3W8v+0WVB3Hrfk9cf9UwaSysiD7LfQck7cB8pZCE+iIBaVxiAkKVCtrl112SW2jR48GYNtttwXad982gi0oY4wxXYsnKGOMMaVkUC6+KDJQJoNaqTdjQ73vHyz1RpaXzSVVmRMOst/puOOOS2333nsvkJUgiHnlOkknZfsDXVuVmSRiEcyy5cgLlMLFV+2+Kuqr936XiKcN+SO7omChXPbVwk7Kgl18xhhjupZSiSQkU5xvvvlS20MPPdS042tTuSj/VBHVpOdls6C6nU7KzMdRSmFB1cJBBx2UXh922GFAc8ROKkEfc0t2UrYP7RvTZuTHbDW2oIwxxnQtnqCMMcaUklK5+KqhvH4LLrhgalOkeCcoi4tP2SJitHw3UpbxrPFz0usSuwm7xsXXz2cD7R3fAT6zq1x83YBdfMYYY7qWeku+vwO80ooTGYiYwbsEzDLwW2qi4fHsdsvpv5RmPGuhxFZTpBlj2rH7vRNjPMBndtU12gXUNJ51ufiMMcaYdmEXnzHGmFLiCcoYY0wp8QRljDGmlHiCMsYYU0o8QRljjCklnqCMMcaUEk9QxhhjSoknKGOMMaXEE5QxxphS4gnKGGNMKfEEZYwxppR4gjLGGFNKPEEZY4wpJZ6gjDHGlBJPUMYYY0qJJyhjjDGlxBOUMcaYUuIJyhhjTCnxBGWMMaaUeIIyxhhTSjxBGWOMKSWeoIwxxpQST1DGGGNKiScoY4wxpcQTlDHGmFLiCcoYY0wp8QRljDGmlHiCMsYYU0o8QRljjCklnqCMMcaUEk9QxhhjSoknKGOMMaXEE5QxxphS4gnKGGNMKfEEZYwxppR4gjLGGFNKPEEZY4wpJZ6gjDHGlBJPUMYYY0qJJyhjjDGlxBOUMcaYUuIJyhhjTCnxBGWMMaaUeIIyxhhTSjxBGWOMKSWeoIwxxpQST1DGGGNKiScoY4wxpcQTlDHGmFLiCcoYY0wp8QRljDGmlHiCMsYYU0o8QRljjCklw+p5c09PT2+rTqTb6O3t7Wn0GBrPoUOHprZvvvmm0cN2lPHGGw+Ar776qq6/a+Z4GgDe6e3tHdXIATyeORoeT/CYRmq55+uaoDrBsGHfneLXX39d0/t7er77zr295b8Ohg4dyogRI/joo49SWzPOv55j6L39vX/RRRcF4JFHHunTd//99wOw5JJLprbKiSkeUxNxnJCnmmoq3nnnnQHP09TNK50+gcEwZMh3Th1dl61esE055ZTp9bvvvlvtrV05nlD/M0W/wbffftu0c4j3fE9PT83Pc7v4jDHGlBJPUMYYY0pJKV180RSNLqjK/y8yWbvBtSe++eYbPvjgg8K+yu8N1b9b0biobaGFFkp9jz32WO7vxh9//PT6iy++AODzzz9PbS+99BIA8847LwAnnnhi6ltvvfVy/wL885//BODpp5/uc/xJJpkEIOfSfOutt/r9TqZ8tML9M/HEE6fXn376adOOWwsDuPW6liLXutq0Txw59thj0+sbb7wRgDvvvBOADz/8MPXp94+u1+HDhwPwySef9Hs+g3XV2oIyxhhTSnrqsTg6oUApg+ghrjgkAmim6kyrEqhtZVpkLcVjaMWkc41WzCmnnALA3nvvDWRWE8DHH3+c+7t43KJN61GjvhM1RZHEfvvtB8CKK66YO794Hl9++WVqm3DCCfniiy/49ttvreJrLg/29vYu0cgBisazFRZUl9DweMLglbtF93x8Ls0222wAPPvsswAsvfTSqe+KK64AYIEFFgDg/fffr+uzG6GayK2WZ6gtKGOMMaXEE5QxxphS0nYX34QTTgjkN+K1eS53UzQH11prLQBeeeW7MIS4Ia8N+2jqvv7668DgXRDRlJZ5WhR02iwX35AhQwrPVZ8N1WPAJp98ciDbqAR47733gGzzedZZZ019Gsd55pkn9/8Ar776KgBXXXVValt++eUBuOaaawDYddddU5/EDtFlV+16mmyyyYD8puuwYcP4+uuvx8lAXbnDZpxxxtSma6kN4pCWuPjKTpG7vFYX+gorrADALbfcUtTdFBffeOON1zty5EjGjh076GOcffbZQHYPA0w00UQATDHFFADstttuqe/qq68G4LPPPgM6LySr5563BWWMMaaUtMWCKtoQ1GoaYM899wRg3333BfLWQ1z9VCIr7G9/+1tq23rrrYHWb+J2YsU/1VRTAZkVCvDyyy8DMPXUU8fjAtUltJNOOmmfv7v++usBGDlyZGobMWIEAD/5yU+AvHWlMY4WrKy9eldp44oFFX8beQQOOOCA1LbyyisDcOWVVwLwpz/9KfXJumrSxnXDK/4JJ5ywd5ZZZkkb781G93n0Wgz2+plgggmAfMaT+eabr9FTjDRVJFEryuQS5fcK5bj99ttTmzwdm2++OQCXX3556pP4qdOWUyW2oIwxxnQtDVtQso7iqk8rfckZY5/2K5588snUpkBSrZ6WWmqp1HfWWWfl3r/RRhulviIf83333QfA//3f/+U+r9k0a8Xf09OT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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 12/100, d_loss=0.095, g_loss=0.665                                                                                                                        \n",
      "epoch = 13/100, d_loss=0.075, g_loss=0.670                                                                                                                                                                                                                                                                                                                               \n",
      "epoch = 14/100, d_loss=0.083, g_loss=0.767                                                                                                                        \n",
      "epoch = 15/100, d_loss=0.092, g_loss=0.759                                                                                                                        \n",
      "epoch = 16/100, d_loss=0.115, g_loss=0.676                                                                                                                                                                                                                            \n",
      "epoch = 17/100, d_loss=0.097, g_loss=0.794                                                                                                                        \n",
      "epoch = 18/100, d_loss=0.096, g_loss=0.638                                                                                                                        \n",
      "epoch = 19/100, d_loss=0.108, g_loss=0.692                                                                                                                                                                                                                            \n",
      "epoch = 20/100, d_loss=0.107, g_loss=0.684                                                                                                                        \n",
      "epoch = 21/100, d_loss=0.089, g_loss=0.733                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnWeYHMXVhV+BEAgBIiNyRiSRoxE5myhjgcnJJBuDMfEjJxOFyRiRbXgIJposQCQZEFFgRBBRgMgSWYBI+/3Ap/vObu/szE7PbM9y3j/bWzXTU1PdPVX31rm3erS0tGCMMcYUjcm6ugHGGGNMFh6gjDHGFBIPUMYYYwqJByhjjDGFxAOUMcaYQuIByhhjTCHxAGWMMaaQeIAyxhhTSDxAGWOMKSQ9q3lxjx49mjrtxJRTTgnApEmTaj5XS0tLj1rP0ez9mSfuz9wZ39LSMkstJ6i0P5dddlkARo0aVcvHAdCrVy8Avvvuu5rPtfzyywPw9NNPd/ocffr0AWDixIk19yc0/z2a57Wu5JnvUU2qo6zO7dGjhz6smrZ1CQsttBAAr732Ws3n8g9qvrg/c+fplpaWFWo5QaX9+eWXXwIw7bTT1vJxAMw333wAjB07tuZz6TdJv1GdYbXVVgPgkUceqbk//9eWpr5H87zWDRmgyjH55JMD8OOPP1bztqbAP6j50NLSwgorrMBTTz3l/syXhg1QvxA8QOVMJb+hXoMyxhhTSDxAGWOMKSRViSSqpTu69ky+1LI+YExnWXLJJQEYPXp0m7qLLrooOd5zzz0b1ibTFltQxhhjCkldRRLdGYsk8uWX0p8NVL0WXiTRt29fAD7//PN6fkwmnbgOFknkjEUSxhhjmhYPUMYYYwpJXUUSWUg4oRgpSDM8KIBWC5jQNea/MfWiGQLaG0Ulz3YU0cw999wAvPPOO0lZJf0Zz6HX9+7dG4Cvv/46qZt66qnblJmuxRaUMcaYQlJXC+q6664DYJtttknKllhiCQCGDBmSlO2///4ATDbZz+PlZ5991uZcmtW8++67Sdnss88OpPm7AA477DAAzjzzzNq/gEmuyQ8//ACUzlijFfxLR7P0OFv/6aef2pTlaUE1U5qxcswyS5ri7osvvgBg8ODBABxwwAFJ3ayzzgrADjvskJQ9/PDDQPk+yKrLspK++eabaprdEIYNGwbAhhtu2MUt6RpsQRljjCkkdZGZX3jhhQDss88+AJx00klJ3VxzzQXA9ttvH88LwIsvvgjAWWedldTdfffdALz66qtAul7VEfJTL7744knZV199VdF7K6HIsuiePX82jI844ggAbrnllqTuueeeq+pcsqAuu+wyAHbdddekLs+Ze1f2Z/weuhe1HgHpbPvyyy8HYKONNkrqdG9vsMEGAKy00kpJ3QwzzACk1ifAbLPNBqT3orwAAO+//36bsvfee68zXwnqLDOfYoopkuPvv/++pC7Lso59rONzzjkHgKFDhyZ1a621FgDHHHMMANNPP31Sp6DZBx54ICnTb43udfUhpAlNtXYFMHz48DbtEcp6rizorauLJjNfdNFFk2N5lnRfKQs7wIgRI4D0dyG+T+v9Y8aMyatZFWOZuTHGmKbFA5QxxphCUheRxN57713y/5///OfkeODAgQDstttuSdmCCy4IwMsvvwyULirLlaCo85lmmimpO/vsswFYZ511kjK5U2TWy80CnXfxyc0F6cJ30dh5552T43/84x9Auulblsul0q1QdA65uXbZZZea29rVlBMXqCzeK9NMM02755KbqhzRHSYRwEsvvQSk+x8BPPHEE0Bz9HFrt14kuuXkyr/nnnuSMomitD/bM888k9Sp36+66ioAtttuuzbnl8sKYLPNNis5R1Zux5EjRybHut/lCox9HV2rRUb30xVXXJGUDRo0CIBzzz0XKP09KMciiywCpEsoUKzfOFtQxhhjCkldRBKNlr9q8Rrazj6PPfbY5Pi4445r897OtrXIIon+/fsD8MorrwDZ301ik0mTJpU9V+v3xuzPAwYMqKmdrT6n4f1ZrbXUFfTr1w+ADz/8sNq3NjwXn6xyeTsA5p9/fgC23HLLpEySaQXqLrPMMkldtL6g1FKT9TnjjDMmZdE6bY94D3/77bclf6N3IbY7g7qLJMp5aqI4TN6M+Pq3334bgOWWWw6AcePGJXUKw9Hro9dEorV4f6m/9Pp6WVQWSRhjjGlaPEAZY4wpJE293cbWW28NpBkrIooKj/EsWay22moAPPLII1V9dpFdfHLtSSgS+6ATrsyS/z/55JPkOApWaqWR/Sk33rrrrgvAUUcdldQpBiZ+b91LitOLcSRCbsKpppoqKZO7+eabb45tLHlfdGFluat22mknAK68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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 22/100, d_loss=0.113, g_loss=0.628                                                                                                                        \n",
      "epoch = 23/100, d_loss=0.095, g_loss=0.743                                                                                                                        \n",
      "epoch = 24/100, d_loss=0.100, g_loss=0.761                                                                                                                        \n",
      "epoch = 25/100, d_loss=0.074, g_loss=0.741                                                                                                                        \n",
      "epoch = 26/100, d_loss=0.079, g_loss=0.641                                                                                                                        \n",
      "epoch = 27/100, d_loss=0.105, g_loss=0.849                                                                                                                        \n",
      "epoch = 28/100, d_loss=0.071, g_loss=0.675                                                                                                                        \n",
      "epoch = 29/100, d_loss=0.087, g_loss=0.798                                                                                                                        \n",
      "epoch = 30/100, d_loss=0.086, g_loss=0.740                                                                                                                        \n",
      "epoch = 31/100, d_loss=0.072, g_loss=0.700                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xe4XEX9x/H3DSH0FkgIoYTepUkJEDqhShGklwcByfPQeRQbTSNKDTwgRVBQEAQpBtAgClKVHorU0CEJCKF3CHB/f/D7zJm999y9d3fP7s65+bz+yT5nNrvnzp7dOd+Z78x0dHZ2YmZmlpoB7T4BMzOzPG6gzMwsSW6gzMwsSW6gzMwsSW6gzMwsSW6gzMwsSW6gzMwsSW6gzMwsSW6gzMwsSQNreXJHR4eXnfh/nZ2dHY2+husz4/os3JudnZ1DGnkB12eFhusTmlenAwZ8HWt89dVXzXj5pujLd76mBsqsv6v2RW/Gj8BMM80UHn/55ZcAdHRk39sGliJ7uYHTsu6Srs8555wTgPfff7/NZ1KsftdA6cvtNQZnTDPNNFP4oQcYOPDrS/yLL77o9tyZZ54ZgLPOOiscO/TQQ3t87WbcncbnKr52rVb9rWESj0GZmVmS3ECZmVmSOmrpTvCgacaD+sVqdn1uvPHG4fHtt9/e6FsFs8wyCwCfffZZt7JZZ50VgE8//bRbmcYMPvzww8LOBSq6uCd2dnau2eBr+frMNFyfkNXpmmtmL/Xggw82+rKl1JfvvCMoMzNLkiOoOjmCKlY76/Pss88Ojw8//PBenz/HHHOExx999FE9b9kKjqCKVWgElbJWJZo5gjIzs9JyA2VmZklyF1+dZpQuvnfeeQeAeeedF4DPP/88lClBoAjNrs9vfetb4fHf/va3ul5f86biOVUJz1lyF1+xWtrFpwncefPkGnjvin8h+y689dZb4dgFF1wAwIgRI4DK+X9XXHFFYefjLj4zMyutpFaSyBucO+qoowB47LHHALj77rtD2ccff9zCs5txLLXUUuGxogXdYY0aNSqUNStVuki6+9MyRb2ptvLE9OnTARg2bFg4phn8SiVv5VpoStZIOFGjZqpjRRDx3f7pp58OwJlnnhmO6brMS/MvsyIjp1VXXRXI6u2b3/xmKJtrrrmAynrefffdAdh+++0BuOWWWwo7l1o5gjIzsyQlMQa14IILAjB27FgADjrooJr+f3xX/5///Ke4E6uiP49BxXdTl156KZDdVcV3U9tssw1QzDhMGepT9bLtttuGY4rwx4wZA8Abb7wRyhRZNjuqiqPD6L2SGoOKr6lf/vKXQPa933///Rt+fUX9L7zwQsOv1YNSpJlrcvgiiywSjo0fPx7IxpTiaFO9UAsttFB8jkAWxcVTLy688MKazqfaWJrHoMzMrLTcQJmZWZLa1sU3evTo8PiYY44BYKONNqrrteJB+rvuugvIBvjyBruLUIYuqXrtuOOO4bG6B/LKrr/++sLes8j6fP3118MxdSMVQV1pgwYNCseefvppAGaffXYAJk+eHMoeffRRAA488MBwTN+3oUOHApXdLUrhj7sElYiirpJlllkmlKl75qGHHgrHvv/97wMwbty4JLr41F2kLlDIuoa32267Xv9/XBfVEl1Ur31NhqlDKbr4lMBzzz33hGOLL744AO+99x4AK6ywQijT7+P8888fjt18881Ads2ttNJKoezdd98FWtet7wjKzMyS1LYISneeAEsuuSSQTYSM/fvf/wayO4MFFlgglM0999xA9bum+A5MKZVFpKf3xwhK9ZO3+Zmuk3nmmScc++CDDwp77yLrs6AdabvRHeU555wTju21115AlvIdT2TWlIgbb7wxHFOEddFFFwFZ5AVZNDXbbLN1O39dx3G0pGQNTaaGih6DJCIoidcv1IC5ej7iz2v48OFAdqce16fqQnUOcNlll1W8z5577hkeFzmplCZGUPpNe/PNN+t+XV2bSmLYZ599Qpl+H5VMdt9994Uy1emKK64Yjv33v/+teM299947lF1++eV1n2NXjqDMzKy03ECZmVmSWrKSRF6XyyWXXBKOnXjiiUDWjREP4j3zzDNAFqYuuuiioWyJJZYA4De/+U04tuyyy1a8Z9zF84c//AGAww47LByLB9RnRHF3Ut4adaq/q6++Gii2W69Zil4fT6tLKGHhmmuuCWWbbropkA1Ex9fTWmutBVR2qUyYMAHIVkZZd911Q5m6vuJuLXWzaJNFdYdD5Zwr0fqI8WukIG+1C9VrreI5Pl3pOi2TRrr2ZPDgwQAce+yxQNaFDPDEE08A2Xc3/n7od/K6664Lx9RNrN/cVs0tzeMIyszMktSSJIk4iUEt9qRJk8KxxRZbDMgS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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 32/100, d_loss=0.090, g_loss=0.772                                                                                                                        \n",
      "epoch = 33/100, d_loss=0.059, g_loss=0.713                                                                                                                        \n",
      "epoch = 34/100, d_loss=0.073, g_loss=0.697                                                                                                                        \n",
      "epoch = 35/100, d_loss=0.110, g_loss=0.746                                                                                                                        \n",
      "epoch = 36/100, d_loss=0.120, g_loss=0.707                                                                                                                        \n",
      "epoch = 37/100, d_loss=0.096, g_loss=0.736                                                                                                                        \n",
      "epoch = 38/100, d_loss=0.097, g_loss=0.680                                                                                                                        \n",
      "epoch = 39/100, d_loss=0.133, g_loss=0.662                                                                                                                        \n",
      "epoch = 40/100, d_loss=0.085, g_loss=0.734                                                                                                                        \n",
      "epoch = 41/100, d_loss=0.077, g_loss=0.756                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 42/100, d_loss=0.087, g_loss=0.727                                                                                                                        \n",
      "epoch = 43/100, d_loss=0.092, g_loss=0.654                                                                                                                        \n",
      "epoch = 44/100, d_loss=0.095, g_loss=0.652                                                                                                                        \n",
      "epoch = 45/100, d_loss=0.086, g_loss=0.732                                                                                                                        \n",
      "epoch = 46/100, d_loss=0.082, g_loss=0.807                                                                                                                        \n",
      "epoch = 47/100, d_loss=0.090, g_loss=0.732                                                                                                                        \n",
      "epoch = 48/100, d_loss=0.089, g_loss=0.698                                                                                                                        \n",
      "epoch = 49/100, d_loss=0.084, g_loss=0.734                                                                                                                        \n",
      "epoch = 50/100, d_loss=0.091, g_loss=0.735                                                                                                                        \n",
      "epoch = 51/100, d_loss=0.108, g_loss=0.703                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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D5InoR966CEgfz1UpdViUt/CSV27dnXHbM1CUk2+Yvj//hY6sM8EOPXUU4F4pYo0ZClJwmchkkL1JP31J7YdidXwS1FQSRJ+2NheF9oqZsOGDUC0gSHAmjVr8j7L2t9CWimulQomSSLJtGnTgGhLmCTWRo1tLGhVKKwqRVqUJCEiIpkVxAiqfi0+f4O9MWPGAFEihL8x3MCBA4Foch+iGlFpVtiF2j7x29MlRHXMGpucN0888QQAo0aNAuJP/paGWovq2JVoz/bt2+cGDhyYuFliWm688UYArrjiCiB5VN+3b1/3+q233qrKdRHYCCqJ3Yt+VRmrbWhLTpKWTyQl8dixFBMjgh5BnXLKKQAsXrwYiP9d2/er/a9fp88iJH67WXWJtBPMNIISEZHMCmIEVZ8fI7UY84gRI4D406jtdzRgwAB3bMmSJUBl90VJUssRlF+hPSnmbum7FuPPQg2zrM5BPffccwAMHjzYrsGds/s47XvR59VdC34ElTFBj6Caykb8/ggq7eiT0QhKREQySx2UiIgEKcgQXyF+DT8r0+9veNbUcEr79u2BeMJFIVkNSYUqq+158sknA9F28I888og7d+211wLxWpFWJWXhwoVpX5pCfJXVLEN8taQQn4iIZFZmRlBJE85WI8pPu66WLDzxF7N9fCiy0J6lqr98oso0giqg2L8NS9LavXu3RlAVphGUiIhkljooEREJUtW322iqpDBJLUJ7WZKF0F4WeGGekv67m2++GYApU6ZU/JqkPMX+bVRrTZAk0whKRESCVGqSxDvAmvQuJzN653K5g8r9ELWno/asvLLbVO0Zo3u0sopqz5I6KBERkWpRiE9ERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKkDkpERIKk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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 52/100, d_loss=0.102, g_loss=0.721                                                                                                                        \n",
      "epoch = 53/100, d_loss=0.082, g_loss=0.774                                                                                                                        \n",
      "epoch = 54/100, d_loss=0.107, g_loss=0.760                                                                                                                        \n",
      "epoch = 55/100, d_loss=0.091, g_loss=0.753                                                                                                                        \n",
      "epoch = 56/100, d_loss=0.103, g_loss=0.681                                                                                                                        \n",
      "epoch = 57/100, d_loss=0.069, g_loss=0.738                                                                                                                        \n",
      "epoch = 58/100, d_loss=0.076, g_loss=0.802                                                                                                                        \n",
      "epoch = 59/100, d_loss=0.072, g_loss=0.709                                                                                                                        \n",
      "epoch = 60/100, d_loss=0.069, g_loss=0.695                                                                                                                        \n",
      "epoch = 61/100, d_loss=0.080, g_loss=0.824                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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5NRtMWPGDACuv/761LbJJpsAcO2117Z1zgkTikfgwoULG7204/EE36ORZn7zA4ODzY/XWBncgYFiXFr5/BE/UKtlLI7nOuusA8BNN93U1feJ93C4t68dHBzctJPzLrbYYoOTJk3igQceaOr148a94JBZtGjRsH3D9fcBHY8n5HePjibN/Obt4jPGGJMlnqCMMcZkSUt7UFWy9NJLp+Mnnniip+/drlvPdMZiiy0G1I7/CH7/7FlyySUBePzxx4Haz7PssssCcN5556W2XXbZZdhzLb744gA8++yzLV1DdFlXycKFC5ty773+9a8H4A9/+MOwr2nk1tO+JRR7l/pMnfxW9d089dRTI75mpNeZ0cEWlDHGmCzpa5FEI8XYxIkTAZg8eXJqu+WWW4BqLKixuKnfiOnTpwNw1113deX8uY3nl7/85XT86U9/uqZviSWWSMeTJk0CCkHE3LlzU99vfvMbAP75z3+mNllTl112WVWXOhwdb+pXOZ4WSbxAP/3mu41FEsYYY/oWT1DGGGOyZNREElXQKBj04YcfHvIauQTPOeec1KaN3a997WvduMS+Qm6Yl73sZantueeeA+D+++8HWgps7Bui+0nu3+jWU79EDxJEQHH/LLfccgC85CUvSX033HADAGeeeWZq+8c//lHptefOxhtvDMCf/vSnUbuG1VdfPR1HdyuM7HqsQqxRBSussEI6fvTRRwF46UtfmtqOPvpoAK6++moALr744tSn36zEaK0G0Y8mtqCMMcZkSfYWlFYwkihHWeh//vMfAI455pjUtvfeewPFKuFf//pX6ps6dSpQu2r63Oc+B7SfoqcfiDJkrfA333xzAObNm5f6JID4v//7v9T24Q9/GICVVloJgPe+972p77bbbgPKrSq1yQIDuPPOOwFYbbXVOvo8VTPSpr36tXJde+21U5/CJZ588kmgVkChtpiap9to3HOxbnttOZVliam3miIjfffTpk0D4J577un84lpgypQpAPz73/8G4LHHHkt9b33rWwG45JJLUpvuzVmzZo147viM++9//1vzPgBrrLFGu5ddObagjDHGZEn2FpTQrP7Od74ztb3pTW8CYKuttkptSy21FFBYV4ceemjq057Avvvum9ruu+8+oHvBjjmw3nrrpWMl+VRQaOTlL385AGeffXZq00pcFuaWW26Z+mSdPvPMM0PO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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 62/100, d_loss=0.069, g_loss=0.765                                                                                                                        \n",
      "epoch = 63/100, d_loss=0.100, g_loss=0.753                                                                                                                        \n",
      "epoch = 64/100, d_loss=0.071, g_loss=0.884                                                                                                                        \n",
      "epoch = 65/100, d_loss=0.080, g_loss=0.747                                                                                                                        \n",
      "epoch = 66/100, d_loss=0.103, g_loss=0.703                                                                                                                        \n",
      "epoch = 67/100, d_loss=0.101, g_loss=0.709                                                                                                                        \n",
      "epoch = 68/100, d_loss=0.089, g_loss=0.833                                                                                                                        \n",
      "epoch = 69/100, d_loss=0.093, g_loss=0.741                                                                                                                        \n",
      "epoch = 70/100, d_loss=0.098, g_loss=0.799                                                                                                                        \n",
      "epoch = 71/100, d_loss=0.101, g_loss=0.824                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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fe+//OUvAXjxxRdDnUQ355xzDpDtwauVDz/8MByvssoqAJx00kmhbIcddmigxXbxGWOMKTFJycxlJclqisvyePDBBwFYZ511WtuwRNCCcTsXi+ea64tHZJ555gHgvffea9u9W8UWW2wBwPXXX9/0tWQxaVb66aefhjqJNZZYYolQpsXrzTffHIA333yzR10zcu2yS731vktgsv3224c6fbb7778/lOl5vPHGGwE49thjQ52e2dgCmHPOOYFM1DJt2rRQd/DBBwPwhz/8oYiP0lb0We+55x6g8jfxmGOOAbLP3hvqZ1llujbAAw88AMCaa67ZZItrwxaUMcaYJEliDaqWNmimGvvz83z74pprrgFgm222abJ1+ZR1zUSzqO985zsAnH766aFOs/8hQ4b0+Dt9R8OGDQtljz32WGHtKlN/xs+d1pLuuusuAA4//PBQJ59/vC7VfXYaU7D1k/wa1Nxzzw3AzTffHMo23njjhq4l6zOWpauPH3/88VB22WWXAfDrX/+64hzInu1JkyaFss8++0yHSa9BCfXf/vvvH8oGDx4MwPTp04FKD8yuu+4KwEcffRTKjj76aACOOOIIoLKP9t13XwAWWGCBUHbiiSc21FavQRljjCktHqCMMcYkScdcfPFu/1tvvRWATTbZJO+eFf/XIiDACSecAMDFF19c0z2ruQTrpQwuKQkcYjfnpZdeqns3dM24r4866igAnnjiiQZbmFGG/hSDBg0Kx6NGjQKyxflVV1011El6HqPnfvjw4QA89NBDoS52sxRAsi4+Rd+48847AVhjjTVmeW4skorFU0JuK7mc8n7P9B4A3HbbbQDsscceALz88su1NrsULj658CPXZNXULtW4+uqrAdh6661DmaKixMKfRrGLzxhjTGnpmMw8HuG78+67786yboMNNuhR9o9//CMcV7MIqy1Qlx1Ftgb47W9/C8A+++xT+H122WWXcLz66qsDsO6664ayWGadEmeccUY4HjduHFAZr6we3njjjXA8fvx4AP785z8D+VZTHprBxwv4jVpQtW7LSAX1e150eL2j//3vf4FKEY+EKN/4xjdCWfeN+Ycddlg4zpNVy/qV5XvBBRc09iESJe93td6klwsttBAAW265ZY86/Ta3KymoLShjjDFJ4gHKGGNMkrTdxRfvShYyEW+//XYARo4c2fT1493j3Xnh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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 72/100, d_loss=0.092, g_loss=0.744                                                                                                                        \n",
      "epoch = 73/100, d_loss=0.082, g_loss=0.766                                                                                                                        \n",
      "epoch = 74/100, d_loss=0.122, g_loss=0.730                                                                                                                        \n",
      "epoch = 75/100, d_loss=0.075, g_loss=0.841                                                                                                                        \n",
      "epoch = 76/100, d_loss=0.086, g_loss=0.781                                                                                                                                                                                                                            \n",
      "epoch = 77/100, d_loss=0.132, g_loss=0.683                                                                                                                        \n",
      "epoch = 78/100, d_loss=0.079, g_loss=0.688                                                                                                                        \n",
      "epoch = 79/100, d_loss=0.106, g_loss=0.907                                                                                                                        \n",
      "epoch = 80/100, d_loss=0.058, g_loss=0.820                                                                                                                                                                                                                            \n",
      "epoch = 81/100, d_loss=0.099, g_loss=0.838                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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6tWrY/v89Ea7Cx0zZozbduaZZwJw9913A9CuXbus55GNTVizqAOi52TlYOdfnwmdV1xxBZAcOdm4crZoIK38vzcpGs/mvvvuA+CMM86o8fN2x5/ErlU/gnrwwQdjx/LvXDcXp59+eq37rrvuOiB5yXfJnT/ycf311wPw7LPPAvDpp5+6fR07dgTiVeDt/fbs1abuABx55JEAnHXWWW5b5rNrPYMSEZGKpw5KRESCVLAhvnxnFvvDJJlDLv6wSeayzUnH9pMk7AHgqaeeGvu5urAhxHIO6xXab3/7WyCaVe4/+LehzEpcojzfYT1fZk0yv32yXV/Wdv7y29tssw0Ahx56KFBzCLtSWR04iCdNAfTt29e9HjduXJ2Ob8f0a9C9+eabAPTu3dtts0UkNycvvfQSEF2PfhKUJaj516ElNtj38JVXXun22THGjx9f5/Np0KBBzt/LiqBERCRIBYuginWnna2ntQfffq0zu7v1a6JJxP6d/Af3JjNaTZuqqiq23HLLglcFf+WVV2L/77edTcY977zzauyzaOnGG29020444QSgZhRR6SwFOcmdd97pXucSQbVp08a9fuCBBwDYe++9gWhiP0QjAn5SwOYYQVmyl332/RGAE088EYgvYpj5XV7o7/Z8vl82r0+JiIikRlEm6paKLRH/6quvum02qaxz585AvORHXSUthxzyxNJc2N/h301ZZWO74yqlkNvTInVrH599ft566y0guiZrY+8/+uijgZpTLAooiIm69owzKR3frsEJEya4bf7zKIhPErXPebY29r/P7Nr2nz9amR9bSy4PqZqo6/vJT34CwOzZs4H495mV5rL0cci9rFJ9aaKuiIikljooEREJUhBLvteVVdb1H4rb8JTtK4S0Jg0ksRqI/tCeSaouIdEQkQ3j7b777jXes6mhPWPtbhUl/KoplXSdmWzLhtuiev4DemN14CxFui5suM+/rm1R1M1Jly5dgGhoz68yseeeewLhTidRBCUiIkFK9S2zVfX275Cs3lTSA+1s0pRibenLkH/dvEceeaTWfX59rVx8//vfB+C1117L6+fSyqKkTp06uW12h+9PfjQ2gdxPENh5552BaPKuX9V/xowZBT7j8rP07yTWFn4af7NmzYD4OlmZ1q1b517bd4Cl9/sJPhYV2O8BWLRoEQD3338/kJwAFSJ/+kIuSQz+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RESC1DCfN1dVVVUX60TSprq6uqq+x1B7RtSeBbequrq6ZX0OoPaMqXd7gtrUl8tnPq8OSkRSY0mhDtSoUSP3ev369YU6bNoUrD0ldxriExGRIKmDEhGRIGmIrwIdd9xxAMyYMaNOP3/hhRe616NHjy7IOUl6bcbDemyxxRYAbNiwocxnsnlSBCUiIkGqqq7OPalEGSiRtGedHXrooQD06tXLbbv00ktrvO+tt94CYI899gAgn+slH2lvzwDNra6u3rc+B2jYsGF1s2bN+Oijjwp1TmlW7/YEXaO+XD7ziqBERCRI6qBERCRIqUmSyDa0VFVV79GhimLtkdRmLVt+O9fwd7/7HQA9e/as8Z4WLVq415988kmtx5LKtmHDhpIP79m1e9tttwHw2muvuX3XXnstAE2aNHHbPvjgAwBeeeUVAH72s5+V5DylNBRBiYhIkIKKoK6++moABg8e7Lb17dt3kz/35Zdfutdbb7114U8sZSzasfTge++91+2ztu3Ro0etP7969Wr3+vLLLwfguuuuK/h5ptV2223nXn/11VcAfPPNN0A80pw3bx4QJZgAfPrppwDccsstQLxdP//88yKdcf3stttu7vWSJYUvqNC6dWv32trApjr47WnX5caNG90222/naGnhPj9FPJe08Xbt2rnXixcvzulvkOJQBCUiIkEKKs18yy23BKK70k154403gChlGuDDDz8Eovph/h1q//79AZg+fbrbdsIJJ9TpXEuZFp3tmZLZaqut3Ovtt98egPfffx+ABg1q3ofYXai/z7ZZuwIcdthhAKxYsSKXU62zNKWZ+3fYFrHbv41dfxC1mV/LziRNfrV/w2233dZts4irDuqdFl3s9rS2mzhxottmn/1jjjkGgKOOOsrt22WXXQDYcccd3bbXX38diCKdbt26uX2zZs0CYK+99nLb7NqePHkyAA8//LDbN2nSpGynqzTzAlOauYiIpJY6KBERCVIQSRKWKvqd73wnr5/r3Llz7Od9Q4cOBeCyyy5z2y655BIgPoSSBrkMwzZv3ty9Xr58OYBLEfYfKu+9994AnHTSSQCce+65bt+aNWsAaNy4sdvWtGlTAFatWgVAw4bRJfP111/n8Veknw1B+8Nzzz//PACzZ88G4sNE9sDfH0a19rRhW789bbjq/vvvd9sscagS6+HZEF/Xrl3dNkt2GDJk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Y4klvmwLyZaTIigREQmSOigREQlSSYb4fDYc4IfpNuSW7UF/viyRwB9asCQM/3d369YNiBbpSpukZR7soX6fPn2A+DBm5pCdPyvfElLuvfdet+20004DoofV/vCrHasSh/V8NnfpvPPOA+JJE7nUMrTrDmDOnDkADB8+HIiqU4TMFsqEaHmRXNkCjf58vf333x+AiRMnArDLLrvUOL7V1rOfhyiJxJ8HNW7cOADat28PRBUloLBVUypJUv298ePHl/5EcqAISkREglSSShKbYjPEe/fuDcCNN97o9llqac+ePQFo1aqV29exY0cgfpdShVHLAAAB3ElEQVTlV4cuppArH2Ty7/itQrFFsn5SiT3AL1aF82xCbk+7E7fEhrFjx9Z4j32O7GE9wIIFCwA4//zz3bYLLrgAgCuvvBIoaiX/ICpJGD+KHzBgABAtdGm13yBaZtyuU4taAV577TUgnppfwuioYipJLFy40L3u0KEDULrqET5VkhARkdQKIoJKo5Dv+NOokO3pr2NTyMmvVm0/12XFLTry1496+umngeTnAAUWVARVy/GB+DOuxYsXF/NX1kfFRFBJ3/l9+/Z1r+25XgnOQxGUiIikkzooEREJkob46khDfIWVpva01H6IHurfcccdAEybNs3tGzFiBJC9akoRBT/ElzKpH+Kz5Yz86hxW+9CXax3T+tIQn4iIpJYiqDpK0x1/Gqg9C04RVGGlPoIy/nd+mzZtgHhtQptm4icbFek8FEGJiEg6qYMSEZEglbwWn4ikR1VVVWpr2Vltz3JURglZUhKEv63YQ3v5UAQlIiJByjeCWgXkV864Mu226bfkRO35LbVn4RWiTVdVV1entj0LHDlV9DVahig5p/bMK4tPRESkVDTEJyIiQVIHJSIiQVIHJSIiQVIHJSIiQVIHJSIiQVIHJSIiQVIHJSIiQVIHJSIiQVIHJSIiQfo/WoM/1JiweA8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 82/100, d_loss=0.099, g_loss=0.801                                                                                                                        \n",
      "epoch = 83/100, d_loss=0.076, g_loss=0.753                                                                                                                        \n",
      "epoch = 84/100, d_loss=0.072, g_loss=0.631                                                                                                                        \n",
      "epoch = 85/100, d_loss=0.080, g_loss=0.773                                                                                                                        \n",
      "epoch = 86/100, d_loss=0.086, g_loss=0.886                                                                                                                                                                                                                            \n",
      "epoch = 87/100, d_loss=0.110, g_loss=0.940                                                                                                                        \n",
      "epoch = 88/100, d_loss=0.073, g_loss=0.728                                                                                                                                                                                                                           \n",
      "epoch = 89/100, d_loss=0.064, g_loss=0.793                                                                                                                        \n",
      "epoch = 90/100, d_loss=0.077, g_loss=0.679                                                                                                                        \n",
      "epoch = 91/100, d_loss=0.073, g_loss=0.931                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 92/100, d_loss=0.078, g_loss=0.878                                                                                                                        \n",
      "epoch = 93/100, d_loss=0.087, g_loss=0.846                                                                                                                        \n",
      "epoch = 94/100, d_loss=0.081, g_loss=0.798                                                                                                                        \n",
      "epoch = 95/100, d_loss=0.076, g_loss=0.847                                                                                                                        \n",
      "epoch = 96/100, d_loss=0.067, g_loss=0.747                                                                                                                        \n",
      "epoch = 97/100, d_loss=0.075, g_loss=0.788                                                                                                                        \n",
      "epoch = 98/100, d_loss=0.076, g_loss=0.747                                                                                                                        \n",
      "epoch = 99/100, d_loss=0.087, g_loss=0.783                                                                                                                        \n",
      "epoch = 100/100, d_loss=0.076, g_loss=0.734                                                                                                                                                                                                                            \n",
      "epoch = 101/100, d_loss=0.091, g_loss=0.782                                                                                                                        \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epochs = 100\n",
    "batch_size = 32\n",
    "smooth = 0.1\n",
    "\n",
    "real = np.ones(shape=(batch_size, 1))\n",
    "fake = np.zeros(shape=(batch_size, 1))\n",
    "\n",
    "d_loss = []\n",
    "d_g_loss = []\n",
    "\n",
    "for e in range(epochs + 1):\n",
    "    for i in range(len(X_train) // batch_size):\n",
    "        \n",
    "        # Train Discriminator weights\n",
    "        discriminator.trainable = True\n",
    "        \n",
    "        # Real samples\n",
    "        X_batch = X_train[i*batch_size:(i+1)*batch_size]\n",
    "        d_loss_real = discriminator.train_on_batch(x=X_batch, y=real * (1 - smooth))\n",
    "        \n",
    "        # Fake Samples\n",
    "        z = np.random.normal(loc=0, scale=1, size=(batch_size, latent_dim))\n",
    "        X_fake = generator.predict_on_batch(z)\n",
    "        \n",
    "        d_loss_fake = discriminator.train_on_batch(x=X_fake, y=fake)\n",
    "         \n",
    "        # Discriminator loss\n",
    "        d_loss_batch = 0.5 * (d_loss_real[0] + d_loss_fake[0])\n",
    "        \n",
    "        # Train Generator weights\n",
    "        discriminator.trainable = False\n",
    "        \n",
    "        d_g_loss_batch = d_g.train_on_batch(x=z, y=real)\n",
    "   \n",
    "        print(\n",
    "            'epoch = %d/%d, batch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, i, len(X_train) // batch_size, d_loss_batch, d_g_loss_batch[0]),\n",
    "            100*' ',\n",
    "            end='\\r'\n",
    "        )\n",
    "    \n",
    "    d_loss.append(d_loss_batch)\n",
    "    d_g_loss.append(d_g_loss_batch[0])\n",
    "    print('epoch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, d_loss[-1], d_g_loss[-1]), 100*' ')\n",
    "\n",
    "    if e % 10 == 0:\n",
    "        samples = 10\n",
    "        x_fake = generator.predict(np.random.normal(loc=0, scale=1, size=(samples, latent_dim)))\n",
    "\n",
    "        for k in range(samples):\n",
    "            plt.subplot(2, 5, k+1)\n",
    "            plt.imshow(x_fake[k].reshape(28, 28), cmap='gray')\n",
    "            plt.xticks([])\n",
    "            plt.yticks([])\n",
    "\n",
    "        plt.tight_layout()\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. Evaluate model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-08-10T06:01:56.728686Z",
     "start_time": "2018-08-10T06:01:56.551734Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plotting the metrics\n",
    "plt.plot(d_loss)\n",
    "plt.plot(d_g_loss)\n",
    "plt.title('Model loss')\n",
    "plt.ylabel('Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Discriminator', 'Adversarial'], loc='center right')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
